Main - Lilliput - OpenJDK Wiki
Main - Lilliput - OpenJDK Wiki
OpenJDKのProject Lilliputは、64ビット HotSpot JVMにおけるオブジェクトヘッダを128ビットから64ビット(将来的には32ビット)に削減することを目標とするプロジェクト
背景と動機
現在のオブジェクトヘッダはロックワード64ビットとクラスポインタ64ビットの計128ビット
平均オブジェクトサイズが5〜6ワードの中、ヘッダが2ワードを占める非効率な状態
ヘッダ削減によりヒープ使用量の削減、GC活動の低減、キャッシュ局所性の向上が見込まれる
技術的課題
ロックワードはスタックロック・モニター・ハッシュコード・GC転送ポインタなど多目的に使用
クラスポインタはすべての型チェックや仮想呼び出し解決に使用され、性能上最重要
ロック・ハッシュコード・配列長はそれぞれ仕様上の制約があり変更が困難
主なアプローチ
クラスポインタの圧縮(32ビット→20ビット以下)またはクラスIDによる間接参照
ロック機構の刷新:Project Loomとの協調を視野に入れたJavaロックへの移行検討
ハッシュコードの遅延割り当て・サイドテーブル管理・再計算方式の採用
ZGCはすでにサイドテーブルを使い転送情報をヘッダに持たない設計
関連プロジェクト
Project Valhallaとは相補的な関係(Valhallaはオブジェクトグラフの平坦化、Lilliputはヘッダ削減)
Project Loomはロック設計に影響する可能性があり、連携が必要
Written by Claude Code